Skip to content

docs(debug-journal): fold in the 2026-09-26 queue slice (15 candidates); correct entries overtaken by the #5109/#5173/#5185/#5188/#5189 merge batch - #5240

Merged
springfall2008 merged 2 commits into
mainfrom
bot/debug-journal-2026-09-26
Sep 26, 2026
Merged

springfall2008 merged 2 commits into
mainfrom
bot/debug-journal-2026-09-26

Conversation

@springfall2008

Copy link
Copy Markdown
Owner

Automated journal flush — the daily /journal-update run folding the triage bot's queued findings into tools/debug-journal.md. Branch pushed by the bot; a human merge is the review gate. 15 candidates processed (the first 15 in filename sort order); 26 remain queued for the next slice.

Per-candidate outcomes

GH#2716 (car charged at peak) — Folded in as a new symptom-table row: non-smart car planning is price-blind by design (car_charging_plan_smart default false, car_charging_plan_max_price default 0 never filters), a saving-session reward stamped onto the import rate can push an hour above the low-rate scan threshold so it vanishes from low_rates, and the in-progress peak-window house top-up is the optimiser's keep response. Line refs re-verified on main (plan.py:3935/:3968 — the high-price gate exempts windows whose limit is already non-zero).

GH#5169 (two test-harness corrections) — Partially folded in. Its part 1 ("all tests share one fixture" is out of date) is already in the journal — PR #5102's per-test instance fix landed before this candidate was written — so that half is dropped as duplicate. Folded in: pollution through module-level/class-level state can still cross the per-test instances (test_secrets.py's race test; the class-attribute lock on LogRedaction), a test that raises aborts the whole run (bare test_failed = func(my_predbat), verified live at unit_test.py:940), and the coverage/run_pre_commit && short-circuit (markdownlint failure ⇒ the quick suite silently never runs).

GH#5171 (id()-reuse test trap) — Folded in as a new trap bullet: allocator probes pass against the unfixed id()-fingerprint code; the deterministic test asserts the mapping is pinned via gc.get_referrers() (dicts not weakref-able). The fingerprint fix itself is merged (7d17ea1b).

GH#5173 (manual rates) — Folded in as a new "Manual rates" row, rewritten for the merge: PR #5173 merged 2026-09-24 — day_of_week rules now stamp across the whole horizon; keep the mechanism for pre-#5173 logs; on current builds a fully-tiled manual tariff is never rate_replicate()d, so "the offset stopped applying" on a manual tariff is that consequence, not a bug. The :59:59 zero-minute boundary trap verified still live (fetch.py:2144 pre-init) and kept as live.

GH#5175 (Axle import boost) — Folded in to the existing Axle row: PR #4520 provenance (first release v8.48.2), docs/energy-rates.md cite, maintainer upheld the design on #5060, #5175 triaged as enhancement, no config knob disables just the import side, and the colour-skew half belongs to the #5050 threshold row.

GH#5176 (manual load adjust) — Folded in as a new "Manual load adjust" row. Since the candidate was written, the docs disagreement it flagged was fixed by the maintainer (c06bff91, 2026-09-23 — docs now say "add the adjustment amount (which can be positive or negative)"); the entry records that, plus the additive mechanism, the plan-HTML ±-marker triage method, and the load_today_comparison citation (confirmed registered in TEST_REGISTRY).

GH#5177 (Solis startup abort) — Folded in as fixed. The journal already recorded PR #5185's merge; folded the surviving refinements into the Solis row (pre-#5185 signature, B0115 raised through the same unguarded call), moved the generic first-stays-True / blank-health-message framework trap to the Component health row (with the backoff corrected to the code's 60s→128min — the candidate's "from 2 min" was wrong), and kept the test_solis.py tricks (instance-attribute mock restore, canned api.session, never patch asyncio.sleep because _with_retry budgets with time.monotonic()).

GH#5178 (GivTCP REST publish) — Folded in: full-surface unconditional publish (count arithmetic, recorder-exclusion workaround, missing docs section) plus the discharge_target_soc claim/publish mismatch (rest_v3-only claim gate vs unsupported-model publish withholding) — both verified live on main. The log-dating trap went to the Version drift trap bullet.

GH#5180 (compare Existing badge) — Folded in to the Compare row: baseline snapshot from the live rate tables vs the refetched plain card, in-tree fix baselines (rate_import_no_io/rate_export_base), test gap, and the finally-block gap kept marked suspected (as in the candidate).

GH#5181 (is_running unhealthy) — Folded in as a new "Status health" row — still live on main, re-verified today (output.py:2699 strftime %z writer, predbat.py:1960 strict fromisoformat reader).

GH#5182 ({power} gets inverter max) — Folded in to the low-power symptom row as the write-path variant: dup of #3311, PR #4645 still unmerged (no merge commit in origin/main), chain re-verified live (inverter.py:630/:1952).

GH#5186 (teslemetry_automatic scoping + tbc default) — Folded in, and the existing Teslemetry row corrected: PR #5188 merged, so teslemetry_tbc_control is now default-on (DEFAULT_TBC_CONTROL = True); rewrote the stale "trial setting" passage and added the scoping fact that teslemetry_automatic gates only automatic_config(), not the scheduler-emulator writes.

GH#5187 (Solis slot current + recovery SoC) — Rewritten as fixed: PR #5189 merged — slot currents capped at the inverter's rated power and implausible recovery SoC (0/1/≤over-discharge/>100) now falls back to over_discharge_soc + 1 (both verified in solis.py); kept the mechanism for pre-#5189 logs. The never-read-slot-CID write-skip trap verified still live and kept as live, with the fixture trap note.

GH#5188 (bool-default narrowing) — Folded in: the first get_arg bool-trap bullet now records that component registry args are protected (a YAML null resolves to the registry default in Components.initialize(), verified components.py:806-811) while the trap survives for direct get_arg() callers; also recorded why the global fix (a None arm in get_arg's bool branch) was deliberately left as a follow-up.

Existing entries corrected (merge-driven)

Verification notes

  • All 15 candidates re-checked against origin/main f0dc5bc4 before folding in. "Fixed on main" claims verified by reading the merged code: the Solis startup guard, the rated-current cap and recovery-SoC fallback, Components.initialize()'s YAML-null normalisation, DEFAULT_TBC_CONTROL, the fingerprint-holding log_secrets fix, and Honour day_of_week when seeding rates beyond the modelled days (#5168) #5173's whole-horizon stamping (2139b063).
  • Two candidate claims corrected during verification: GH#5177's backoff "from 2 min" (component_base.py starts at 60 s), and GH#5176's docs disagreement is moot post-c06bff91.
  • Still-live claims re-verified rather than trusted: the :59:59 zero-minute pre-init (fetch.py:2144), the never-read-slot-CID write-skip (solis.py), compare.py:598 baseline, output.py:2699/predbat.py:1960, the inverter.py:630/:1952 {power} chain, and the bare unit_test.py:940 test call.
  • Pre-commit green (cspell + markdownlint; dictionary gained fromisoformat, weakref). The quick suite then aborted at the documented near-midnight teslemetry clock test (test_teslemetry_local_weekday_follows_the_base_clock, host-UTC date disagreement at 00:09 local) — pre-existing and recorded in the journal's test-date trap, unrelated to this docs-only change.
  • detect_changes vs origin/main: 2 files, docs sections only, 0 affected processes, risk low.

CI and others added 2 commits September 26, 2026 00:10
…s); correct entries overtaken by the #5109/#5173/#5185/#5188/#5189 merge batch

Co-Authored-By: Claude Code <noreply@anthropic.com>
Resolve debug-journal conflicts with #5223's fold of the same merge batch:
- Solis: keep this PR's #5189 detail and write-skip/test notes, then main's GH#5152 window-scoped hold lever
- GE Cloud: main's #5109 wording plus the once-per-episode ems_slot_warned warning and its log text
- Teslemetry: this PR's #5188 default-flip consequences plus main's GH#5157 forced re-assert
- Manual rates: fold both rows into one (#5173 fix, surviving :59:59 boundary-minute and offset traps, test lesson)
- Kraken, Sunsynk, Octopus, Car charging from main; Axle, GivTCP, Compare and the three new rows from this PR

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@springfall2008
springfall2008 marked this pull request as ready for review September 26, 2026 08:41
@springfall2008
springfall2008 merged commit b0816cc into main Sep 26, 2026
2 checks passed
@springfall2008
springfall2008 deleted the bot/debug-journal-2026-09-26 branch September 26, 2026 08:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant